/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package atm;

import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.StaticText;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @version SelectAccount.java
 * @version Created on 21-Mar-2011, 5:41:42 PM
 * @author Albert
 */

public class SelectAccount extends ButtonsPage {
    private String selectPrompt;
    private String selectPrompt1;
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private StaticText stCheckingBal = new StaticText();

    public StaticText getStCheckingBal() {
        return stCheckingBal;
    }

    public void setStCheckingBal(StaticText st) {
        this.stCheckingBal = st;
    }
    private StaticText stSavingBal = new StaticText();

    public StaticText getStSavingBal() {
        return stSavingBal;
    }

    public void setStSavingBal(StaticText st) {
        this.stSavingBal = st;
    }
    private StaticText stCreditBal = new StaticText();

    public StaticText getStCreditBal() {
        return stCreditBal;
    }

    public void setStCreditBal(StaticText st) {
        this.stCreditBal = st;
    }
    private Button btnSaving = new Button();

    public Button getBtnSaving() {
        return btnSaving;
    }

    public void setBtnSaving(Button b) {
        this.btnSaving = b;
    }
    private Button btnCreditCard = new Button();

    public Button getBtnCreditCard() {
        return btnCreditCard;
    }

    public void setBtnCreditCard(Button b) {
        this.btnCreditCard = b;
    }
    private Button btnChecking = new Button();

    public Button getBtnChecking() {
        return btnChecking;
    }

    public void setBtnChecking(Button b) {
        this.btnChecking = b;
    }
    private StaticText stSave = new StaticText();

    public StaticText getStSave() {
        return stSave;
    }

    public void setStSave(StaticText st) {
        this.stSave = st;
    }
    private StaticText stBalSave = new StaticText();

    public StaticText getStBalSave() {
        return stBalSave;
    }

    public void setStBalSave(StaticText st) {
        this.stBalSave = st;
    }
    private StaticText stBalCard = new StaticText();

    public StaticText getStBalCard() {
        return stBalCard;
    }

    public void setStBalCard(StaticText st) {
        this.stBalCard = st;
    }
    private StaticText stCredit = new StaticText();

    public StaticText getStCredit() {
        return stCredit;
    }

    public void setStCredit(StaticText st) {
        this.stCredit = st;
    }
    private StaticText stBalCheck = new StaticText();

    public StaticText getStBalCheck() {
        return stBalCheck;
    }

    public void setStBalCheck(StaticText st) {
        this.stBalCheck = st;
    }
    private StaticText stCheck = new StaticText();

    public StaticText getStCheck() {
        return stCheck;
    }

    public void setStCheck(StaticText st) {
        this.stCheck = st;
    }

    // </editor-fold>

    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public SelectAccount() {
    }

    private String Account1;
    private BankAccount ba;
    private String CheckingBalance = "0.0";
    private String SavingBalance = "0.0";
    private String CreditBalance = "0.0";





    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init()
    {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here
        
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("SelectAccount Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
        UserCard = (String)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(Constants.SessionVarCard);
        SelectedOperation = (String)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(Constants.SessionVarOperation);
        Account1 = (String)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(Constants.SessionVarSelAccount1);
        ba = BankAccount.getFromDB(UserCard, Constants.AccountChecking);

        if (SelectedOperation.equals(Constants.OperDeposit))
        {
            setSelectPrompt("Select account for deposit");
        }
        else
        if (SelectedOperation.equals(Constants.OperPayBills))
        {
            setSelectPrompt("Select account to pay bills");
        }
        else
        if (SelectedOperation.equals(Constants.OperTransfer))
        {
            if (Account1.equals(""))
            {
                setSelectPrompt1("");
                setSelectPrompt("Transfer from account:");
            }
            else
            {
                String sTransFrom = "Checking";
                if (Account1.equals("1"))
                   btnChecking.setDisabled(true);
                if (Account1.equals("2"))
                {
                    sTransFrom = "Saving";
                    btnSaving.setDisabled(true);
                }
                if (Account1.equals("7"))
                {
                    sTransFrom = "Credit Card";
                    btnCreditCard.setDisabled(true);
                }

                setSelectPrompt1("Transfer from " + sTransFrom);
                setSelectPrompt("Transfer to account:");
            }
        }
        else
        if (SelectedOperation.equals(Constants.OperWithdraw))
        {
            setSelectPrompt("Select account to Withdraw");
        }

        if (ba == null)
        {
            btnChecking.setVisible(false);
            stCheck.setVisible(false);
            stCheckingBal.setVisible(false);
            stBalCheck.setVisible(false);
        }
        else
            CheckingBalance = Float.toString(ba.getBalance());
       

        ba = BankAccount.getFromDB(UserCard, Constants.AccountSaving);
        if (ba == null)
        {
            btnSaving.setVisible(false);
            stSave.setVisible(false);
            stSavingBal.setVisible(false);
            stBalSave.setVisible(false);
        }
        else
            SavingBalance = Float.toString(ba.getBalance());

        ba = BankAccount.getFromDB(UserCard, Constants.AccountCreditCard);
        if (ba == null)
        {
            btnCreditCard.setVisible(false);
            stCredit.setVisible(false);
            stCreditBal.setVisible(false);
            stBalCard.setVisible(false);
        }
        else
            CreditBalance = Float.toString(ba.getBalance());
            
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    @Override
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    @Override
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    @Override
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    public void listbox1_processValueChange(ValueChangeEvent event) {
    }



    @Override
    public String buttonOK_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return null;
    }



    @Override
    public String buttonCancel_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return "Selec_UserOper";
    }


    private String getReturnString(String accountS)
    {
        InputString = "";
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constants.SessionVarOperation, SelectedOperation);
        if (Account1 != null && !Account1.isEmpty())
        {
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constants.SessionVarSelAccount1, Account1);
        }
        else
        {
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constants.SessionVarSelAccount1, accountS);
             String sTransFrom = "Chequing";
                if (accountS.equals("1"))
                   btnChecking.setDisabled(true);
                if (accountS.equals("2"))
                {
                    sTransFrom = "Saving";
                    btnSaving.setDisabled(true);
                }
                if (accountS.equals("7"))
                {
                    sTransFrom = "Credit Card";
                    btnCreditCard.setDisabled(true);
                }

                setSelectPrompt1("Transfer from " + sTransFrom);
                setSelectPrompt("Transfer to account:");
        }
        if (SelectedOperation.equals(Constants.OperWithdraw))
        {

            return "SelectAcc_Withdraw";
        }
        else
        if (SelectedOperation.equals(Constants.OperDeposit))
        {

            return "SelectAcc_Deposit";
        }
        else
        if (SelectedOperation.equals(Constants.OperPayBills))
        {
            return "Select_Payee";
        }
        else
        if (SelectedOperation.equals(Constants.OperTransfer))
        {
            if (!Account1.equals(""))
            {
                FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(Constants.SessionVarSelAccount2, accountS);
                return "SelectAcc_Transfer";
            }

        }

        return null;
    }

    public String btnChecking_action() {
        // TODO: Replace with your code
       return getReturnString(Constants.AccountChecking);

    }
   
    public String btnSaving_action() {
        // TODO: Replace with your code
        return getReturnString(Constants.AccountSaving);
    }

    public String btnCreditCard_action() {
        // TODO: Process the action. Return value is a navigation
        return getReturnString(Constants.AccountCreditCard);
    }

    /**
     * @return the CheckingBalance
     */
    public String getCheckingBalance() {
        return CheckingBalance;
    }

    /**
     * @param CheckingBalance the CheckingBalance to set
     */
    public void setCheckingBalance(String CheckingBalance) {
        this.CheckingBalance = CheckingBalance;
    }

    /**
     * @return the SavingBalance
     */
    public String getSavingBalance() {
        return SavingBalance;
    }

    /**
     * @param SavingBalance the SavingBalance to set
     */
    public void setSavingBalance(String SavingBalance) {
        this.SavingBalance = SavingBalance;
    }

    /**
     * @return the CreditBalance
     */
    public String getCreditBalance() {
        return CreditBalance;
    }

    /**
     * @param CreditBalance the CreditBalance to set
     */
    public void setCreditBalance(String CreditBalance) {
        this.CreditBalance = CreditBalance;
    }

    /**
     * @return the selectPrompt
     */
    public String getSelectPrompt() {
        return selectPrompt;
    }

    /**
     * @param selectPrompt the selectPrompt to set
     */
    public void setSelectPrompt(String selectPrompt) {
        this.selectPrompt = selectPrompt;
    }

    /**
     * @return the selectPrompt1
     */
    public String getSelectPrompt1() {
        return selectPrompt1;
    }

    /**
     * @param selectPrompt1 the selectPrompt1 to set
     */
    public void setSelectPrompt1(String selectPrompt1) {
        this.selectPrompt1 = selectPrompt1;
    }

   
    
}

